#pragma once

#include "obse/PluginAPI.h"             // for interfacing with obse
#include "Submodule/Version.h"          // version info for this plugin
#include "Submodule/Interface.h"        // for interfacing with the submodule
#include "Submodule/CSE_Interface.h"    // for interfacing with CSE, if present

/*--------------------------------------------------------------------------------------------*/
// global debugging log
extern OutputTarget*   _gLogFile;
extern _declspec(dllexport) OutputLog _gLog;
extern OutputLog&      gLog;

/*--------------------------------------------------------------------------------------------*/
// global interfaces and handles
extern const OBSEInterface*            g_obseIntfc;			// master obse interface, for generating more specific intefaces below
extern OBSEArrayVarInterface*          g_arrayIntfc;			// obse array variable interface
extern OBSEStringVarInterface*         g_stringIntfc;			// obse string variable interface
extern OBSEScriptInterface*            g_scriptIntfc;			// obse script interface
extern OBSECommandTableInterface*      g_cmdIntfc;				// obse script command interface
extern OBSESerializationInterface*     g_serializationIntfc;	// obse cosave serialization interface
extern OBSEMessagingInterface*         g_messagingIntfc;		// obse inter-plugin messaging interface
extern HMODULE                         g_hExportInjector;		// windows module handle for ExportInjector library
extern HMODULE                         g_hSubmodule;			// windows module handle for submodule dll
extern SubmoduleInterface*             g_submoduleInfc;		// submodule interface
extern CSEInterface*                   g_cseIntfc;				// CSE master interface, if CSE is present
extern CSEConsoleInterface*            g_cseConsoleInfc;		// CSE console interface
